const LazyMan = name => {
  var queue = []
  const task = () => {
    console.log(`你好，我是 ${name}`)
    next()
  }
  queue.push(task)
  const next = () => {
    first = queue.shift()
    first && first()
  }
  let api = {
    sleep(time) {
      const task = () = {
        setTimeout(() => {
          console.log(`我醒了，我刚睡了 ${time} 秒`)
          next()
        }, time * 1000)
      }
      queue.push(task)
      return api
    },
    eat(type) {
      type = type === 'lunch' ? '吃午餐' : type === 'supper' ? '吃晚餐' : null
      const task = () => {
        console.log(`${type}`)
        next()
      }
      queue.push(task)
      return api
    },
    sleepFirst(time) {
      const task = () => {
        setTimeout(() => {
          console.log(`我醒了，我刚睡了 ${time} 秒`)
          next()
        }, time * 1000)
      }
      queue.unshift(task)
      return api
    },
  }
  // 推荐做法：加一个定时器
  setTimeout(() => next())
  return api
}

// LazyMan('Hark')
//=> 你好，我是 Hank

// LazyMan('Hark').sleep(10).eat('lunch')
//=> 你好，我是 Hank （沉默十秒）
//=> 我醒了，我刚睡了 10 秒
//=> 吃午餐

// LazyMan('Hark').eat('lunch').eat('supper')
//=> 你好，我是 Hank
//=> 吃午餐
//=> 吃晚餐

LazyMan('Hark').sleepFirst(5).eat('supper')
//=> （沉默十秒）我醒了，我刚睡了 5秒
//=> 你好，我是 Hark
//=> 吃晚餐
